package io.github.echarts.model.geometry;

/**
 * 表示闭合路径的路径片段
 * 对应SVG路径中的Z命令
 */
public class ClosePath implements PathSegment {
    
    /**
     * ClosePath的单例实例
     * 由于ClosePath没有状态，可以共享一个实例
     */
    public static final ClosePath INSTANCE = new ClosePath();
    
    /**
     * 私有构造函数
     * 使用INSTANCE单例
     */
    private ClosePath() {
        // 私有构造函数
    }
    
    @Override
    public PathSegmentType getType() {
        return PathSegmentType.CLOSE_PATH;
    }
    
    @Override
    public String toSvgPathData() {
        return "Z";
    }
    
    @Override
    public Rectangle getBounds(Point startPoint) {
        // ClosePath本身不增加边界，它只是连接到路径的起始点
        // 如果需要准确计算，需要知道整个路径的起始点
        // 这里返回一个零尺寸的矩形
        if (startPoint != null) {
            return new Rectangle(startPoint.getX(), startPoint.getY(), 0, 0);
        }
        return new Rectangle(0, 0, 0, 0);
    }
    
    @Override
    public boolean equals(Object obj) {
        return obj instanceof ClosePath;
    }
    
    @Override
    public int hashCode() {
        return PathSegmentType.CLOSE_PATH.hashCode();
    }
    
    @Override
    public String toString() {
        return "ClosePath{}";
    }
} 